package pincipal.pack;

import java.util.ArrayList;

import materiales.Material;
import partidas.Partida;

import Presupuesto.Presupuesto;

import database.Consulta;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.database.Cursor;
import android.os.AsyncTask;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log;
import android.view.ContextMenu;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.SubMenu;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.View.OnClickListener;
import android.view.WindowManager;
import android.view.inputmethod.InputMethodManager;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;

public class Buscar extends Activity {

	ListView listViewElementos;
	String materialBuscado;
	ArrayList<Material> arrayMateriales = new ArrayList<Material>();
	ArrayList<Partida> arrayPartidas = new ArrayList<Partida>();
	ArrayList<Presupuesto> arrayPresupuestos = new ArrayList<Presupuesto>();
	
	String[] lista = new String[]{};
	ImageView iconoBusqueda;
	EditText filtro;
	TextView titulo;
	AdaptadorMateriales adaptador;
	ArrayAdapter<String> adaptadorSimple;
	Bundle bundle;
	Button volverAtras;
	Button volverMenuPrincipal;
	String tipo;
	private ProgressDialog pd = null;
	
	@Override
	public void onCreate(Bundle savedInstanceState )
	{
		super.onCreate(savedInstanceState);
		requestWindowFeature( Window.FEATURE_NO_TITLE );
		setContentView(R.layout.buscar);		
		getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);		
		bundle = getIntent().getExtras();
		lista = bundle.getStringArray("LISTA");
		tipo = bundle.getString("TIPO");	
		titulo = (TextView)findViewById(R.id.textViewVentana);		
		
		if(tipo.equals("material"))
		{
			arrayMateriales = (ArrayList<Material>)bundle.getSerializable("ARRAY");
			titulo.setText("Materiales");
		}
		else if(tipo.equals("partida"))
		{
			arrayPartidas = (ArrayList<Partida>)getIntent().getSerializableExtra("ARRAY");
			titulo.setText("Partidas");
		}
		else
		{
			arrayPresupuestos = (ArrayList<Presupuesto>)getIntent().getSerializableExtra("ARRAY");
			titulo.setText("Presupuestos");
		}
		
		this.volverAtras = (Button)findViewById(R.id.volverAtras);
		filtro = (EditText)findViewById(R.id.filtro);
		this.volverMenuPrincipal = (Button)findViewById(R.id.menuPrincipal);
		
		iconoBusqueda = (ImageView)findViewById(R.id.iconoBusqueda);
		iconoBusqueda.setImageResource(android.R.drawable.ic_menu_search);
		
		listViewElementos = (ListView)findViewById(R.id.lista);
		listViewElementos.setTextFilterEnabled(true);

        adaptadorSimple = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, lista);
        adaptador = new AdaptadorMateriales(this);
       
		listViewElementos.setAdapter(adaptadorSimple);
		
		listViewElementos.setOnItemClickListener( new OnItemClickListener()
		{
			public void onItemClick(AdapterView<?> a, View v, int position, long id) 
    		{
	    		if(tipo.equals("material"))
	    		{
	    			verMaterial(buscarIdMaterial(listViewElementos.getItemAtPosition(position).toString()));
	    		}
	    		else if(tipo.equals("partida"))
	    		{
	    			verPartida(buscarIdPartida(listViewElementos.getItemAtPosition(position).toString()));	
	    		}
	    		else
	    		{
	    			verPresupuesto(buscarIdPresupuesto(listViewElementos.getItemAtPosition(position).toString()));
	    		}
	    	}
		});

		registerForContextMenu(this.listViewElementos);
		
		filtro.addTextChangedListener( new TextWatcher()
		{
			public void afterTextChanged(Editable s) {
			}
			public void beforeTextChanged(CharSequence s, int start, int count,
					int after) {
			}
			public void onTextChanged(CharSequence s, int start, int before,
					int count) {
				adaptadorSimple.getFilter().filter(s);
			}
		}
		);		
	
		this.volverMenuPrincipal.setOnClickListener( new OnClickListener()
        {
        	public void onClick(View v)
        	{
        		Intent intent = new Intent(Buscar.this, CubicMagic.class);
        		startActivity(intent);
        	}      	
        });
		
		this.volverAtras.setOnClickListener( new OnClickListener()
        {
        	public void onClick(View v)
        	{
        		Intent intent = new Intent(Buscar.this, CubicMagic.class);
        		startActivity(intent);
        	}   	
        });
	}
	
	class AdaptadorMateriales extends ArrayAdapter {

    	Activity context;   	
    	@SuppressWarnings("unchecked")
    	public AdaptadorMateriales(Activity context) 
    	{
    		super(context, R.layout.list_item, lista);
    		this.context = context;  		
    	}
    		
    public View getView(int position, View convertView, ViewGroup parent) {
    		LayoutInflater inflater = context.getLayoutInflater(); 		
    		View item = inflater.inflate(R.layout.list_item_material, null);   		
    		ImageView icono = (ImageView)item.findViewById(R.id.icono);
    		icono.setImageResource(R.drawable.icono_materiales);    		
    		TextView nombre = (TextView)item.findViewById(R.id.tituloItem);
    		nombre.setText(lista[position]);   		
    		return(item);
    	}
    }

	private int buscarIdMaterial(String nombre)
	{
		for (int i = 0; i < arrayMateriales.size(); i++)
		{
			if ( arrayMateriales.get(i).getNombre().equals(nombre))
			{
				return i;
			}
		}
		return 0;
	}
	
	private int buscarIdPartida(String nombre)
	{
		for (int i = 0; i < arrayPartidas.size(); i++)
		{
			if ( arrayPartidas.get(i).getNombre().equals(nombre))
			{
				return i;
			}
		}
		return 0;
	}
	
	private int buscarIdPresupuesto(String nombre)
	{
		for (int i = 0; i < arrayPresupuestos.size(); i++)
		{
			if ( arrayPresupuestos.get(i).getNombre().equals(nombre))
			{
				return i;
			}
		}
		return 0;
	}


	private void verMaterial(int position)
	{
		Bundle bundle = new Bundle();
		Material clickeado = arrayMateriales.get(position);
		Intent intent = new Intent(Buscar.this, VerMaterial.class);
		intent.putExtras(bundle);
		intent.putExtra("MATERIAL", clickeado);
		startActivity(intent);
	}
	
	private void verPartida(int position)
	{
		
		Bundle bundle = new Bundle();
		Partida clickeado = arrayPartidas.get(position);
		Intent intent = new Intent(Buscar.this, VerPartida.class);
		intent.putExtras(bundle);
		intent.putExtra("PARTIDA", clickeado);
		intent.putExtra("VOLVER", "BUSCAR");
		startActivity(intent);
	}
	
	private void verPresupuesto(int position)
	{
		Bundle bundle = new Bundle();
		Presupuesto clickeado = arrayPresupuestos.get(position);
		Intent intent = new Intent(Buscar.this, VerPresupuesto.class);
		intent.putExtras(bundle);
		intent.putExtra("ID", position);
		intent.putExtra("PRESUPUESTO", clickeado);
		startActivity(intent);
	}
	
	 
	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.layout.menu_buscar, menu);
	    
	    return true;
	}
	
	@Override
    public boolean onOptionsItemSelected(MenuItem item) {
		
        switch (item.getItemId()) {
        
        case R.id.nuevo:
        	if (tipo.equals("material"))
        	{
        		Intent intent = new Intent(Buscar.this, AgregarMaterial.class);
        		startActivity(intent);
        	}
        	else if (tipo.equals("partida"))
        	{
        		ArrayList<String> seleccionados = new ArrayList<String>();
        		ArrayList<String> rendimientos = new ArrayList<String>();
        		seleccionados = new ArrayList<String>();
        		Bundle bundle2 = new Bundle();
        		bundle2.putStringArrayList("LISTA", seleccionados);
        		bundle2.putString("NOMBREORIGINAL", "");
        		bundle2.putString("OBSERVACION", "");
        		bundle2.putStringArrayList("LISTARENDIMIENTOS", rendimientos);
        		Intent intent = new Intent(Buscar.this, AgregarPartida.class);
        		intent.putExtras(bundle2);
        		startActivity(intent);
        	}
        	else
        	{
        		ArrayList<String> seleccionados = new ArrayList<String>();
        		seleccionados = new ArrayList<String>();
        		Bundle bundlePresup = new Bundle();
        		bundlePresup.putStringArrayList("LISTA", seleccionados);
        		bundlePresup.putString("NOMBRENUEVO", "");
        		bundlePresup.putString("FECHAORIGINAL", "");
        		Intent intent = new Intent(Buscar.this, AgregarPresupuesto.class);
        		intent.putExtras(bundlePresup);
        		startActivity(intent);
        	}
            return true;

        default:
            return super.onOptionsItemSelected(item);
        }
    }
	
	
	@Override
	public boolean onKeyDown(int keyCode, KeyEvent event)
	{
		if ((keyCode == KeyEvent.KEYCODE_BACK))
		{
			Intent intent = new Intent(this, CubicMagic.class);
			startActivity(intent);
	
			return true;
	
		}
	
			return super.onKeyDown(keyCode, event);
	}
	
	private class DownloadTask extends AsyncTask<String, Void, Object> {
        protected String doInBackground(String... args)
        {
            return "Datos ya procesados (resultado)";
        }

        protected void onPostExecute(Object result) 
        {
             if (Buscar.this.pd != null) 
            {
            	Buscar.this.pd.dismiss();
            }
        }
   }

	
	
}
